package com.example.github.reflect.demo;

import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * 获取 person.properties 配置文件中的值并调用其中的方法
 */
public class ReflectProperties {
    public static void main(String[] args) throws Exception {
        // 加载配置文件
        Properties properties = new Properties();
        ClassLoader classLoader = ReflectProperties.class.getClassLoader();
        InputStream resource = classLoader.getResourceAsStream("person.properties");
        properties.load(resource);

        // 获取配置文件中的属性值
        String className = properties.getProperty("className");
        String eat = properties.getProperty("method");

        // 加载进内存
        Class person = Class.forName(className);

        // 创建对象实例
        Object instance = person.newInstance();

        // 获取方法实例
        Method eat_method = person.getMethod(eat);

        // 方法调用
        eat_method.invoke(instance);
    }
}
